class SPDLogger
{

private:
    SPDLogger();
    ~SPDLogger();

public:
    SPDLogger(const SPDLogger &logger) = delete;
    SPDLogger &operator=(const SPDLogger &logger) = delete;
    static SPDLogger &instance();

public:
    void init(const std::string &name, const std::string &filepath, int level);
    void setLoggerLevel(int level);
    void uninit();

    void write(int level, const std::string &logText);

private:
    class mylogger;
    std::shared_ptr<mylogger> my_logger_;
};